﻿var zombies = zombies || {};

zombies.ListMember = function () {
    var self = this;
    self.Members = ko.observableArray();
    self.SearchString = ko.observable("");
    self.CurrentPage = ko.observable(1);
    self.IsPrevious = ko.observable(false);
    self.IsNext = ko.observable(false);
    self.Loaded = ko.observable(false);

    self.SendMsg = function () {
        self.CurrentPage(1);
        load(self.CurrentPage(), self.SearchString());
        $.replaceUrl(self.CurrentPage(), self.SearchString());
    };

    self.EnterSendMsg = function (data, event) {
        try {
            if (event.which === 13) {
                self.CurrentPage(1);
                load(self.CurrentPage(), self.SearchString());
                $.replaceUrl(self.CurrentPage(), self.SearchString());
                return false;
            }
            return true;
        }
        catch (e)
        { }
    };

    self.doResetPass = function (item) {
        $.confirm({
            text: "Bạn Có Chắc Chắn Muốn Khôi Phục Mật Khẩu Của Tài Khoản Thành Viên <strong style='color: red'>" + item.UserName + " </strong> Về Mặc Định Không?",
            title: "<strong>Xác Nhận Khôi Phục Mật Khẩu Tài Khoản</strong>",
            confirm: function (button) {
                $.ajax({
                    type: "POST",
                    url: "/api/AdminMember/ResetPassword/" + item.UserName,
                    contentType: "application/json",
                    dataType: 'json'
                }).done(function () {
                    toastr.success("Khôi Phục Mật Khẩu Tài Khoản Thành Viên Thành Công!");
                }).fail(function () {
                    toastr.error("Khôi Phục Mật Khẩu Tài Khoản Thành Viên Thất Bại!");
                });

            },
            confirmButton: "Xác Nhận Khôi Phục",
            cancelButton: "Thoát"
        });
    };

    self.doNext = function () {
        if (self.IsNext()) {
            var page = self.CurrentPage();
            page++;
            self.CurrentPage(page);
            load(page, self.SearchString);
            if (page == 1) {
                self.IsPrevious(false)
            } else {
                self.IsPrevious(true);
            }
            $.replaceUrl(page, self.SearchString());
            App.scrollTo($('#listmem_div'), -50);
        }
    };

    self.doPrevious = function () {
        if (self.IsPrevious()) {
            var page = self.CurrentPage() - 1;
            self.CurrentPage(page);
            load(page, self.SearchString);
            if (page == 1) {
                self.IsPrevious(false)
            } else {
                self.IsPrevious(true);
            }
            $.replaceUrl(page, self.SearchString());
            App.scrollTo($('#listmem_div'), -50);
        }
    };
}

var load = function (id, searchString) {
    viewModel.Loaded(false);
    viewModel.Members.removeAll();

    $.ajax({
        url: '/api/AdminMember/GetMembers/' + id,
        type: 'GET',
        data: { value: searchString },
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    }).done(function (items) {
        if (items.length === 11) {
            items.pop();
            viewModel.IsNext(true);
        } else {
            viewModel.IsNext(false);
        }
        $.each(items, function (idx, item) {
            viewModel.Members.push(new zombies.Member(item));
        });
        viewModel.Loaded(true);
    }).error(function () {
        toastr.error('error');
    })
};

var pageUrl = $.getUrlVars("page");
var searchStringUrl = $.getUrlVars("searchString");
var viewModel;
$(document).ready(function () {

    viewModel = new zombies.ListMember();

    ko.applyBindings(viewModel, document.getElementById("admin_content"));

    if (typeof pageUrl === 'undefined' || !isFinite(String(pageUrl))) {
        viewModel.CurrentPage(1);
    } else {
        viewModel.CurrentPage(pageUrl);
    }
    if (typeof searchStringUrl === 'undefined') {
        viewModel.SearchString("");
    } else {
        viewModel.SearchString(searchStringUrl);
    }
    if (pageUrl > 1) viewModel.IsPrevious(true);

    load(viewModel.CurrentPage(), viewModel.SearchString());
});